1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 package net.sf.pmr.agilePlanning.domain.iteration;
37
38 import java.util.Date;
39 import java.util.Set;
40
41 import org.springframework.aop.TargetSource;
42 import org.springframework.aop.framework.Advised;
43 import org.springframework.aop.target.SingletonTargetSource;
44
45 import net.sf.pmr.agilePlanning.data.iteration.IterationMapper;
46 import net.sf.pmr.core.domain.basicProject.BasicProject;
47
48 /***
49 * @author Arnaud Prost (arnaud.prost@gmail.com)
50 *
51 * Iteration repositoy
52 */
53 public class IterationRepositoryImpl implements IterationRepository {
54
55 /***
56 * Iteration mapper
57 */
58 private IterationMapper iterationMapper;
59
60 /***
61 * @param iterationMapper
62 */
63 public IterationRepositoryImpl(final IterationMapper iterationMapper) {
64 super();
65 this.iterationMapper = iterationMapper;
66 }
67
68 /***
69 * @see net.sf.pmr.agilePlanning.domain.iteration.IterationRepository#findByPersistanceId(int)
70 */
71 public Iteration findByPersistanceId(final int persistanceId) {
72 return (Iteration) iterationMapper.findById(persistanceId);
73 }
74
75 /***
76 * @see net.sf.pmr.agilePlanning.domain.iteration.IterationRepository#addOrUpdate(net.sf.pmr.agilePlanning.domain.iteration.Iteration)
77 */
78 public void addOrUpdate(final Iteration iteration) {
79
80
81
82 BasicProject basicProjectTarget = (getTarget(iteration.getBasicProject()));
83 iteration.setBasicProject(basicProjectTarget);
84
85
86 iterationMapper.addOrUpdate(iteration);
87 }
88
89 /***
90 * @see net.sf.pmr.agilePlanning.domain.iteration.IterationRepository#findByProjectPersistanceId(int)
91 */
92 public Set findByProjectPersistanceId(final int projetPersistanceId) {
93 return iterationMapper.findByProjectPersistanceId(projetPersistanceId);
94 }
95
96 /***
97 * @see net.sf.pmr.agilePlanning.domain.iteration.IterationRepository#findByProjectPersistanceIdAndByDate(int, java.util.Date)
98 */
99 public Iteration findByProjectPersistanceIdAndByDate(final int projetPersistanceId, final Date date) {
100 return iterationMapper.findByProjectPersistanceIdAndByDate(projetPersistanceId, date);
101 }
102
103 /***
104 * BasicProject est un proxy, il faut récupérer la target
105 *
106 * @param object
107 * basicProject proxy
108 * @return basicProject target
109 */
110
111 private BasicProject getTarget(final Object basicProject) {
112
113
114 TargetSource targetSource = ((Advised) basicProject).getTargetSource();
115 Object target = ((SingletonTargetSource) targetSource).getTarget();
116
117
118 return (BasicProject) target;
119
120 }
121
122 }